package model

import (
	"database/sql"
	"time"
)

type UserBroker struct {
	Id            int64          `db:"id"`
	UserId        int64          `db:"user_id"`        // 用户id
	Name          string         `db:"name"`           // 工会名
	AnchorFrom    sql.NullString `db:"anchor_from"`    // 主播来源
	WhoRecommend  sql.NullString `db:"who_recommend"`  // 推荐用户id
	Member        sql.NullString `db:"member"`         // 工会人数
	WorkPlatforms sql.NullString `db:"work_platforms"` // 工作平台
	Facebook      sql.NullString `db:"facebook"`       // facebook
	Whatsapp      sql.NullString `db:"whatsapp"`       // whatsapp
	Telegram      sql.NullString `db:"telegram"`       // telegram
	Email         sql.NullString `db:"email"`          // 邮件
	CardType      sql.NullString `db:"card_type"`      // 证件类型
	CardNo        sql.NullString `db:"card_no"`        // 证件号码
	CardPhoto     sql.NullString `db:"card_photo"`     // 证件照
	FaceVideo     sql.NullString `db:"face_video"`     // 正面视频
	PhoneCode     sql.NullString `db:"phone_code"`     // 手机区号
	Status        int64          `db:"status"`         // 0:审核中，1:审核成功，2:审核失败
	Comment       sql.NullString `db:"comment"`        // 审核备注
	Withdraw      int64          `db:"withdraw"`       // 是否支持提现
	UnionName     sql.NullString `db:"union_name"`     // 工会名称
	UnionIntro    sql.NullString `db:"union_intro"`    // 工会intro
	Created       time.Time      `db:"created"`
	Updated       sql.NullTime   `db:"updated"`
	Deleted       sql.NullTime   `db:"deleted"`
}

type UserBrokerUnionJoin struct {
	Id        int64          `db:"id"`
	UserId    int64          `db:"user_id"`    // 用户id
	BrokerId  int64          `db:"broker_id"`  // 经纪人id（废弃）
	UnionId   int64          `db:"union_id"`   // 工会id
	Role      int64          `db:"role"`       // 角色 1公会长 2管理员 3普通成员
	Cause     sql.NullString `db:"cause"`      // 申请原因
	ValidType int64          `db:"valid_type"` // 有效期类型 1:3个月 2:6个月 3:12个月
	InviteUid int64          `db:"invite_uid"` // 邀请人id
	Status    int64          `db:"status"`     // 状态 1正常 2退出的
	ExpireAt  sql.NullTime   `db:"expire_at"`  // 到期时间
	LiveDate  sql.NullTime   `db:"live_date"`  // 最近活跃时间
	Created   time.Time      `db:"created"`
	Updated   sql.NullTime   `db:"updated"`
	Deleted   sql.NullTime   `db:"deleted"`
}

type UserInfo struct {
	Id         uint64         `db:"id"`
	UserId     int64          `db:"user_id"`      // 用户id
	UserNo     sql.NullString `db:"user_no"`      // 编号
	InitUserNo sql.NullString `db:"init_user_no"` // 初始编号
	Nickname   sql.NullString `db:"nickname"`     // 昵称
	Gender     sql.NullInt64  `db:"gender"`       // 性别：0未知 1男 2女
	Avatar     sql.NullString `db:"avatar"`       // 头像
	Bimg       sql.NullString `db:"bimg"`         // 背景图
	Birthday   sql.NullTime   `db:"birthday"`     // 生日
	Country    sql.NullString `db:"country"`      // 国家
	Region     string         `db:"region"`       // 地区 按配置通过国家区分
	Role       int64          `db:"role"`
	InviteCode string         `db:"invite_code"` // 邀请码
	Created    time.Time      `db:"created"`
	Updated    sql.NullTime   `db:"updated"`
	Deleted    sql.NullTime   `db:"deleted"`
}

type User struct {
	Id             int64           `db:"id"`
	UserNo         string          `db:"user_no"`         // 用户编号
	Phone          sql.NullString  `db:"phone"`           // 手机号
	Role           int64           `db:"role"`            // 用户角色
	Token          sql.NullString  `db:"token"`           // jwt
	State          int64           `db:"state"`           // 状态：0正常 1封禁 2注销中 3已注销
	Country        sql.NullString  `db:"country"`         // 国家
	Region         string          `db:"region"`          // 地区 如MiddleEast MiddleEastNearby
	ActiveIp       sql.NullString  `db:"active_ip"`       // 注册ip
	Longitude      sql.NullFloat64 `db:"longitude"`       // 经度
	Latitude       sql.NullFloat64 `db:"latitude"`        // 纬度
	GeoCode        sql.NullString  `db:"geo_code"`        // 经纬度所计算的geohash码
	DeviceId       sql.NullString  `db:"device_id"`       // 设备id
	DeviceType     sql.NullString  `db:"device_type"`     // 设备类类型
	PackageName    sql.NullString  `db:"package_name"`    // 包名
	PackageChannel sql.NullString  `db:"package_channel"` // 包渠道
	PackageVersion sql.NullString  `db:"package_version"` // 包版本
	LoginTime      sql.NullTime    `db:"login_time"`      // 登录时间
	RegType        int64           `db:"reg_type"`        // 注册类型 1app注册 2内部号
	Passwd         string          `db:"passwd"`          // 密码
	IsAssign       int64           `db:"is_assign"`       // 内部号分配状态 1已分配 2未分配
	Created        time.Time       `db:"created"`
	Updated        sql.NullTime    `db:"updated"`
	Deleted        sql.NullTime    `db:"deleted"`
	Remark         string          `db:"remark"` //备注
}

type Order struct {
	Id             int64          `db:"id"`
	OrderNo        string         `db:"order_no"`        // 订单号
	UserId         int64          `db:"user_id"`         // 用户id
	ProductId      int64          `db:"product_id"`      // 产品id
	ProductType    int64          `db:"product_type"`    // 产品类型
	ProductPrice   float64        `db:"product_price"`   // 产品价格
	ProductValue   string         `db:"product_value"`   // 购买的具体内容
	IsSubscribable int64          `db:"is_subscribable"` // 订阅0否，1是
	Price          float64        `db:"price"`           // 价格
	TransactionId  sql.NullString `db:"transaction_id"`  // 交易id
	Payment        sql.NullInt64  `db:"payment"`         // 付款方式：1苹果付款 2google付款
	PaymentThird   sql.NullString `db:"payment_third"`   // 三方支付
	Device         sql.NullString `db:"device"`          // 设备id
	Package        sql.NullString `db:"package"`         // 包名
	OrderTime      time.Time      `db:"order_time"`      // 下单时间
	PayTime        sql.NullTime   `db:"pay_time"`        // 付款时间
	RefundTime     sql.NullTime   `db:"refund_time"`     // 退款时间
	ShippingTime   sql.NullTime   `db:"shipping_time"`   // 发货时间
	State          int64          `db:"state"`           // 状态：0待付款 1已付款 2已退款
	Overflow       float64        `db:"overflow"`        // 溢价（百分之几）
	GiveAway       float64        `db:"give_away"`       // 赠送
	H5GiveCoins    int64          `db:"h5_give_coins"`   // h5赠送金币
}

type UserDevice struct {
	Id             int64          `db:"id"`
	UserId         int64          `db:"user_id"`         // 用户id
	DeviceId       sql.NullString `db:"device_id"`       // 设备id
	Ip             sql.NullString `db:"ip"`              // ip
	DeviceType     sql.NullString `db:"device_type"`     // 设别类型
	DeviceModel    sql.NullString `db:"device_model"`    // 设备机型
	DeviceVersion  sql.NullString `db:"device_version"`  // 设备版本
	DeviceLang     sql.NullString `db:"device_lang"`     // 设备语音
	PackageName    sql.NullString `db:"package_name"`    // 包名
	PackageVersion sql.NullString `db:"package_version"` // 包本版本
	PackageChannel sql.NullString `db:"package_channel"` // 包渠道
	PackageLang    sql.NullString `db:"package_lang"`    // 包语言
	Vpn            sql.NullString `db:"vpn"`             // vpn
	AdjustId       sql.NullString `db:"adjust_id"`       // adjust_id
	Country        sql.NullString `db:"country"`         // 国家
	Created        time.Time      `db:"created"`
	Updated        sql.NullTime   `db:"updated"`
	Deleted        sql.NullTime   `db:"deleted"`
}
